Python爬虫

您所在的位置:网站首页 北京买房有多难 知乎 Python爬虫

Python爬虫

2024-06-19 19:14| 来源: 网络整理| 查看: 265

文章目录 1.概述2.数据采集3.数据清洗3.1.读取数据3.2.去掉车位(地下室)数据3.3.房源信息解析 4.数据处理及可视化4.1.各地区二手房源数4.2.各地区二手房均价4.3.各地区二手房总价4.4.各地区二手房面积4.5.各地区二手房年限4.6.各地区二手房【价格-地区】数量分布4.7.各地区二手房【户型-价格】数量分布4.8.各地区二手房【户型-地区】数量分布4.9.各地区二手房【户型-地区】均价分布 5.房源标题及小区词云6.总结

1.概述

最近看到一句话,感觉很扎心,这句话是”任何一个男孩子小时候的梦想,绝对不是买套房“。

其实,刚从象牙塔步入社会的时候,不曾想过房的事情。记得2016年房价猛涨,方才对房有了一些认知而已。直到随着年龄的增长,房子的故事便不得不需要展开了。

北上广深如今的房价又到了什么样惊人的数值呢?从贝壳找房最新的贝壳指数来看:北京是6.13万,上海5.62万,广州2.86万,深圳7.05万。

今天,我们从贝壳找房 爬取了 8万+二手房源信息,看看在北京的二手房都是什么样的存在。

通过本篇,大家可以在了解北京二手房多维度信息的同时学习Python的re正则表达式、pandas数据处理以及绘图库(pyecharts、seaborn)柱状图+饼图+直方图+箱线图+map+热力图+堆叠图和高德api的使用等。

数据说明:

数据来源:贝壳找房-二手房 数据日期:2020年12月28日 数据量级:82,346(含车位,数据处理阶段清洗)

工具环境

Python 3.8.5

库用途requests爬虫请求网站数据re正则解析网页数据及数据清洗pandas数据清洗及统分pyecharts绘图matplotlib绘图seaborn绘图 2.数据采集

贝壳找房的数据爬取比较简单,简单的翻页规律和HTML网页文本解析。我们编写for循环,用requests请求数据,再用re正则表达式进行房源数据解析即可。

鉴于整个爬虫过程并不复杂,这里亦不细说,后续专题介绍如何获取全部数据。

网页源数据

房源数据解析代码如下:

# 请求网页数据函数 def get_html(url, proxies): try: rep = requests.get(url, headers= header, proxies= proxies, timeout=6) except Exception as e : print(e) proxies = get_proxies() rep = requests.get(url, headers= header, proxies= proxies, timeout=6) while rep.status_code != 200: proxies = get_proxies() rep = requests.get(url, headers= header, proxies= proxies, timeout=6) html = rep.text html = re.sub('\s', '', html) # 将html文本中非字符数据去掉 return html,proxies # 循环请求每页数据 num = 0 for page in range(1,pages+1): items = [] time.sleep(random.random()) info_url = f'{url}/pg{page}' try: info_html, proxies = get_html(info_url, proxies) except Exception as e: print(e) continue sellListContent = re.findall(r'(.*?)', info_html)[0] Lists = re.findall(r'(.*?)', sellListContent) for List in Lists: try: # 获取房屋信息 item = {} item['标题'] = re.findall(r'detail"title="(.*?)"data-hreftype=', List)[0] item['房子ID'] = re.findall(r'housedel_id=(\d+)&', List)[0] item['地址'] = re.findall(r'(.*)', List)[0][1] item['详情页'] = re.findall(r'(.*)', List)[0][0] item['详情'] = re.findall(r'(.*?)', List)[0] item['总价'] = re.findall(r'(\d+\.?\d*)(.*?)', List)[0][0] item['总价单位'] = re.findall(r'(\d+\.?\d*)(.*?)', List)[0][1] item['均价'] = re.findall(r'


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3